package com.iapcursos.portal.procefet.modelo.beans.sessions;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import com.iapcursos.portal.procefet.modelo.beans.entitys.Pessoa;
import com.iapcursos.portal.procefet.modelo.beans.sessions.interfaces.GerenciadorPessoas;

@Stateless(mappedName="gerenciadorPessoas")
public class GerenciadorPessoasBean implements GerenciadorPessoas{

	@PersistenceContext(unitName="iap")
	private EntityManager entityManager;
	
	@SuppressWarnings("unchecked")
	@Override
	public List<Pessoa> getTodasAsPessoas() {
		Query query = entityManager.createQuery("SELECT p FROM Pessoa p");
		List<Pessoa> pessoa = query.getResultList();
		return pessoa;
	}
	
	@Override
	public Pessoa getPessoaByid(int idPessoa){
		Query query = entityManager.createQuery("SELECT p FROM Pessoa p where p.id = :id");
		query.setParameter("id", idPessoa);
		Pessoa pessoa = (Pessoa) query.getSingleResult();
		return pessoa;
	}

	@Override
	public void persistirPessoa(Pessoa pessoa) {
		this.entityManager.persist(pessoa);
		
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Pessoa> getAllPessoas() {
		List<Pessoa> pessoas;
		Query query = entityManager.createQuery("SELECT p FROM Pessoa p");
		pessoas = query.getResultList();
		return pessoas;
	}

	@Override
	public Pessoa getPessoaByLogin(String login) {
		Query query = entityManager.createQuery("SELECT p FROM Pessoa p where p.usuario.login = :login");
		query.setParameter("login", login);
		Pessoa pessoa = (Pessoa) query.getSingleResult();
		return pessoa;
	}

	@Override
	public boolean existeLogin(String login) {
		Query query = entityManager.createQuery("SELECT COUNT(u) FROM Usuario u where u.login = :login");
		query.setParameter("login", login);
		Long qtd = (Long)query.getSingleResult();
		return (qtd>0);
	}
	
	@Override
	public void atualizarPessoa(Pessoa pessoa){
		entityManager.merge(pessoa);
	}

	@Override
	public void excluirPessoa(Pessoa pessoa) {
		Pessoa p = entityManager.find(Pessoa.class, pessoa.getId());
		entityManager.remove(p);
	}
	
}
